/**
 * @(#)GradoRangoSalarialK.java Jan 15, 2007
 *
 * Copyright (c) 2005-2010 Psiqueware S.A. de C.V. All Rights Reserved.
 * This software is the proprietary information Psiqueware S.A. de C.V.
 * Use is subject to license terms.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *
 * <br/>Usuario : Psique
 * <br/>Creaci&oacute;n: Jan 15, 2007 - 9:42:11 AM
 * <br/>
 * <br/>
 * <br/><t5>Cambios :</t5>
 * <br/><b>Fecha | Autor  |  Cambios</b>
 * <ul>
 * <li>Jan 15, 2007 | <a href = "mailto:AngelElectrico@PsiqueWare.com">Psique</a> | Creaci&oacute;n del Objeto.</li>
 *
 * </ul>
 */

package com.psiqueware.jazmin.empresas.recursos.humanos.compensaciones.modelo;

import com.psiqueware.alheli.basico.BaseObject;
import com.psiqueware.jazmin.empresas.recursos.humanos.compensaciones.GradoRangoSalarial;

import java.math.BigDecimal;


/**
 * Es un rango (m&iacute;nimo, medio y m&aacute;ximo) en el que puede caer un Salario para un Puesto determinado.
 * <br/>Paquete Original: com.psiqueware.tulipan.empresas.modelo
 * <br/>Nombre  Original: GradoRangoSalarialK
 * <br/>Oprima para ver : <a href="GradoRangoSalarialK.java.html"><i>C&oacute;digo Fuente</i> </a>
 *
 * @author <a href="mailto:AngelElectrico@PsiqueWare.com">Psique</a>
 * @version Revision: 1.1 Jan 15, 2007 9:42:11 AM
 * @noinspection ClassWithoutLogger
 */
public class GradoRangoSalarialK extends BaseObject implements GradoRangoSalarial
{


    /** Grado de expertise para el que aplica este RangoSalarial. */
    private Integer m_grado;

    /**
     * Nombre del Grado al que pertenece este {@link RangoSalarial}.
     * T&iacute;picamente es el n&uacute;mero de grado pero puede ser definido por el usuario.
     */
    private String m_clave;

    /** Cantidad mensual a pagar como m&iacute;nimo para quien este en este grado y tenga este {@link RangoSalarial}. */
    private BigDecimal m_minimo;

    /** Cantidad mensual a pagar como media para quien este en este grado y tenga este {@link RangoSalarial}. */
    private BigDecimal m_media;

    /** Cantidad mensual a pagar como m&iacute;nimo para quien este en este grado y tenga este {@link RangoSalarial}. */
    private BigDecimal m_maximo;

    /** Constructor de GradoRangoSalarialK. */
    public GradoRangoSalarialK ()
    {
    }

    /**
     * Realiza una comparaci&oacute;n de este objeto contra otro a fin de
     * realizar una ordenaci&oacute;n natural. De ser necesario alterar el
     * orden de objetos se factible sobrecargar este m&eacute;todo.
     *
     * @noinspection MethodWithMultipleReturnPoints
     * @see Comparable#compareTo
     */
    @Override
    public int compareTo ( final Object o )
    {
        GradoRangoSalarial gs = ( GradoRangoSalarial ) o;
        return m_minimo.compareTo ( gs.getMinimo () );
    }

    public GradoRangoSalarialK ( final String clave, final BigDecimal minimo, final BigDecimal media, final BigDecimal maximo )
    {
        m_minimo = minimo;
        m_media = media;
        m_maximo = maximo;
        m_clave = clave;

    }


    /**
     * Devuelve el Grado de expertise para el que aplica este RangoSalarial.
     *
     * @return valor de 'grado'.
     *
     * @see Integer
     */
    public Integer getGrado ()
    {
        return m_grado;
    }

    /**
     * Establece el Grado de expertise para el que aplica este RangoSalarial.
     *
     * @param grado nuevo valor para 'grado'.
     *
     * @see Integer
     */
    public void setGrado ( final Integer grado )
    {
        m_grado = grado;
    }

    /**
     * Devuelve el Nombre del Grado al que pertenece este {@link RangoSalarial}.
     * T&iacute;picamente es el n&uacute;mero de grado pero puede ser definido por el usuario.
     *
     * @return valor de 'nombreGrado'.
     *
     * @see String
     */
    public String getClave ()
    {
        return m_clave;
    }

    /**
     * Establece el Nombre del Grado al que pertenece este {@link RangoSalarial}.
     * T&iacute;picamente es el n&uacute;mero de grado pero puede ser definido por el usuario.
     *
     * @param clave nuevo valor para 'nombreGrado'.
     *
     * @see String
     */
    public void setClave ( final String clave )
    {
        m_clave = clave;
    }

    /**
     * Devuelve el Cantidad mensual a pagar como m&iacute;nimo para quien este en este grado y tenga este {@link RangoSalarial}.
     *
     * @return valor de 'minimo'.
     *
     * @see BigDecimal
     */
    public BigDecimal getMinimo ()
    {
        return m_minimo;
    }

    /**
     * Establece el Cantidad mensual a pagar como m&iacute;nimo para quien este en este grado y tenga este {@link RangoSalarial}.
     *
     * @param minimo nuevo valor para 'minimo'.
     *
     * @see BigDecimal
     */
    public void setMinimo ( final BigDecimal minimo )
    {
        m_minimo = minimo;
    }

    /**
     * Devuelve el Cantidad mensual a pagar como media para quien este en este grado y tenga este {@link RangoSalarial}.
     *
     * @return valor de 'media'.
     *
     * @see BigDecimal
     */
    public BigDecimal getMedia ()
    {
        return m_media;
    }

    /**
     * Establece el Cantidad mensual a pagar como media para quien este en este grado y tenga este {@link RangoSalarial}.
     *
     * @param media nuevo valor para 'media'.
     *
     * @see BigDecimal
     */
    public void setMedia ( final BigDecimal media )
    {
        m_media = media;
    }

    /**
     * Devuelve el Cantidad mensual a pagar como m&iacute;nimo para quien este en este grado y tenga este {@link RangoSalarial}.
     *
     * @return valor de 'maximo'.
     *
     * @see BigDecimal
     */
    public BigDecimal getMaximo ()
    {
        return m_maximo;
    }

    /**
     * Establece el Cantidad mensual a pagar como m&iacute;nimo para quien este en este grado y tenga este {@link RangoSalarial}.
     *
     * @param maximo nuevo valor para 'maximo'.
     *
     * @see BigDecimal
     */
    public void setMaximo ( final BigDecimal maximo )
    {
        m_maximo = maximo;
    }

    /**
     * Convierte este {@link GradoRangoSalarial} a su representación textual.
     *
     * @noinspection DuplicateStringLiteralInspection,HardCodedStringLiteral,HardcodedLineSeparator
     */
    public String toString ()
    {
        StringBuilder sb = new StringBuilder ();
        sb.append ( "<Instance Class = '" ).append ( this.getClass ().getCanonicalName () ).append ( "'>" );
        sb.append ( "<grado>" ).append ( m_grado ).append ( "</grado> " );
        sb.append ( "<nombreGrado>" ).append ( m_clave ).append ( "</nombreGrado> " );
        sb.append ( "<minimo>" ).append ( m_minimo ).append ( "</minimo> " );
        sb.append ( "<media>" ).append ( m_media ).append ( "</media> " );
        sb.append ( "<maximo>" ).append ( m_maximo ).append ( "</maximo> " );
        sb.append ( "</Instance>" );
        return sb.toString ();
    }
}

